﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using ADOConectado;
using System.Data.SqlClient;
using System.Data;

namespace ADOConectado
{
    public static class dbCobranzas
    {

        public static void CobrarCuota(int paramIdCobraanza,int paramIdVenta ,int paramNroCuota)
        {
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("CobrarCuota", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@intIdCobranza", paramIdCobraanza);
            dataCommand.Parameters.AddWithValue("@intIdVenta", paramIdVenta);
            dataCommand.Parameters.AddWithValue("@intNroCuota", paramNroCuota);
            SqlDataReader objReader = dataCommand.ExecuteReader();
            objConexion.Close();
           
        }

        public static void InsertarCobranza(int? idCliente, int cantCuotas, decimal anticipo, int idTipoDeCuota, DateTime fechaVenta, decimal valorCuota)
        {
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("InsertarCobranza", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@intIdCliente", idCliente);
            dataCommand.Parameters.AddWithValue("@intCantCuotas", cantCuotas);
            dataCommand.Parameters.AddWithValue("@decValorCuota", valorCuota);
            dataCommand.Parameters.AddWithValue("@decAnticipo", anticipo);
            dataCommand.Parameters.AddWithValue("@intIdTipoDeCuota", idTipoDeCuota);
            dataCommand.Parameters.AddWithValue("@datFechaVenta", fechaVenta);
            SqlDataReader objReader = dataCommand.ExecuteReader();
            objConexion.Close();
 
        }

        public static List<Cobranza> ListarDetallesDeCobranza(int paramIntIdVenta)
        {
            List<Cobranza> lstCobranza = new List<Cobranza>();
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("ListarDetallesCobranza", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@intIdVenta", Convert.ToInt32(paramIntIdVenta));
            SqlDataReader objReader = dataCommand.ExecuteReader();
            try
            {
                while (objReader.Read())
                {

                    Cobranza objCobranza = new Cobranza(Convert.ToInt32(objReader["intIdCobranza"]), Convert.ToInt32(objReader["intIdVenta"]), Convert.ToInt32(objReader["intDni"]), Convert.ToInt32(objReader["intNroCuota"]), objReader["varLeyendaPagado"].ToString(), Convert.ToDateTime(objReader["datFechaVto"]));
                    // Venta objVenta = new Venta(Convert.ToInt32(objReader["intIdVenta"]), Convert.ToInt32(objReader["intCodProd"]), objReader["varNombreProducto"].ToString(), objReader["varMarca"].ToString(), objReader["varModelo"].ToString(), Convert.ToInt32(objReader["intDni"]), Convert.ToInt32(objReader["intCantidad"]), objReader["varModoPago"].ToString(), Convert.ToDecimal(objReader["decAnticipo"]), Convert.ToInt32(objReader["intCantCuotas"]), Convert.ToInt32(objReader["intNumeroCuotaPaga"]), Convert.ToDecimal(objReader["decPrecioContado"]), objReader["varTipoDeCuota"].ToString(), Convert.ToDecimal(objReader["decValorCuota"]), Convert.ToDateTime(objReader["datFechaVenta"]), (objReader["varNroFactura"]).ToString());
                    lstCobranza.Add(objCobranza);
                }
                return lstCobranza;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
            finally
            {
                objConexion.Close();
            }


      }
        public static List<Venta> BuscarCobranzas(string paramDni, string paramFechaDesde, string paramFechaHasta)
        {
            List<Venta> lstCobranza = new List<Venta>();
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("BuscarCobranzas", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            if (paramDni != "")
                dataCommand.Parameters.AddWithValue("@intDni", Convert.ToInt32(paramDni));
            else
                dataCommand.Parameters.AddWithValue("@intDni", System.DBNull.Value);
            //if (paramFechaDesde.ToString() != "")
            //    dataCommand.Parameters.AddWithValue("@datFechaDesde", new DateTime(paramFechaDesde.Year,paramFechaDesde.Month,paramFechaDesde.Day,00,00,00));
            //else
               dataCommand.Parameters.AddWithValue("@datFechaDesde", System.DBNull.Value);
            //if (paramFechaHasta.ToString() != "")
            //    dataCommand.Parameters.AddWithValue("@datFechaHasta",new DateTime(paramFechaHasta.Year,paramFechaHasta.Month,paramFechaHasta.Day,23,59,59,59));
            //else
                dataCommand.Parameters.AddWithValue("@datFechaHasta", System.DBNull.Value);

            SqlDataReader objReader = dataCommand.ExecuteReader();

            try
            {
                while (objReader.Read())
                {

                    Venta objCobranza = new Venta(objReader["intIdVenta"].ToString(), objReader["intCodProd"].ToString(), objReader["varNombreProducto"].ToString(), objReader["varMarca"].ToString(), objReader["varModelo"].ToString(), objReader["intDni"].ToString(), objReader["intCantidad"].ToString(), objReader["varModoPago"].ToString(), objReader["decAnticipo"].ToString(), objReader["intCantCuotas"].ToString(), objReader["intNumeroCuotaPaga"].ToString(), objReader["decPrecioContado"].ToString(), objReader["varTipoDeCuota"].ToString(), objReader["decValorCuota"].ToString(), Convert.ToDateTime(objReader["datFechaVenta"]), (objReader["varNroFactura"]).ToString());
                    // Venta objVenta = new Venta(Convert.ToInt32(objReader["intIdVenta"]), Convert.ToInt32(objReader["intCodProd"]), objReader["varNombreProducto"].ToString(), objReader["varMarca"].ToString(), objReader["varModelo"].ToString(), Convert.ToInt32(objReader["intDni"]), Convert.ToInt32(objReader["intCantidad"]), objReader["varModoPago"].ToString(), Convert.ToDecimal(objReader["decAnticipo"]), Convert.ToInt32(objReader["intCantCuotas"]), Convert.ToInt32(objReader["intNumeroCuotaPaga"]), Convert.ToDecimal(objReader["decPrecioContado"]), objReader["varTipoDeCuota"].ToString(), Convert.ToDecimal(objReader["decValorCuota"]), Convert.ToDateTime(objReader["datFechaVenta"]), (objReader["varNroFactura"]).ToString());
                    lstCobranza.Add(objCobranza);
                }
                return lstCobranza;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException("Parameter cannot be null", "original");
            }
            finally
            {
                objConexion.Close();
            }
        }

        public static void Descobrar(int IdCobranza)
        {
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("Descobrar", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@intIdCobranza", IdCobranza);
            SqlDataReader objReader = dataCommand.ExecuteReader();

        }

        public static void cambiarFechaCobranza(DateTime fechaNueva, int IdCobranza)
        {
            SqlConnection objConexion = new SqlConnection(Conexiones.StringConexion);
            objConexion.Open();
            SqlCommand dataCommand = new SqlCommand("CambiarFechaCobranza", objConexion);
            dataCommand.CommandType = CommandType.StoredProcedure;
            dataCommand.Parameters.AddWithValue("@intIdCobranza", IdCobranza);
            dataCommand.Parameters.AddWithValue("@datFechaCobranzaNueva", fechaNueva);
            SqlDataReader objReader = dataCommand.ExecuteReader();
        }

       
    }
}
